package br.com.sms.dominio;

import java.util.Date;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Transient;

import br.com.sms.enuns.Situacao;
import br.com.sms.util.DataUtil;

@Entity
public class Cliente extends Pessoa{

	private int id;
	private String nome;
	private Date dataContrato;
	private String dataContratoString;
	private Situacao situacao;
	private String endereco;
	private String telefone;
	private String email;
	private String cnpj;
	private String descricao;
	private Set<Perfil> perfis;
	
	
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome() {
		if(nome != null){
			nome = nome.toUpperCase();
		}
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Date getDataContrato() {
		return dataContrato;
	}
	public void setDataContrato(Date dataContrato) {
		this.dataContrato = dataContrato;
	}
	
	public Situacao getSituacao() {
		return situacao;
	}
	
	public void setSituacao(Situacao situacao) {
		this.situacao = situacao;
	}
	public String getEndereco() {
		if(endereco != null){
			endereco = endereco.toUpperCase();
		}
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public String getEmail() {
		return email;
	}
	
	public void setEmail(String email) {
		this.email = email;
	}
	
	@Column(unique = true, nullable = true)
	public String getCnpj() {
		return cnpj;
	}
	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	
	@ManyToOne(optional = false)
	public Cidade getCidade() {
		return super.getCidade();
	}
	
	@Transient
	public String getDataContratoString() {
		return DataUtil.getDataFormatadaSemHoras(dataContrato);
	}
	public void setDataContratoString(String dataContratoString) {
		this.dataContratoString = dataContratoString;
	}
	@OneToMany
	public Set<Perfil> getPerfis() {
		return perfis;
	}
	public void setPerfis(Set<Perfil> perfis) {
		this.perfis = perfis;
	}
	
	
}
